<?php

class PerfilAcesso_InsereController extends Zend_Controller_ActionAquiles{

    public function init() {
        parent::init();
        $this->view->title = 'Adição de Perfil de Acesso.';
    }
    
    public function indexAction() {
        $this->view->form = new Application_Form_PerfilAcesso_Insere();
    }

    public function validaAction() {
        $resp = new Util_Function_JsonResponse();
        $form = new Application_Form_PerfilAcesso_Insere();
        $form->setDefaults($this->_request->getPost());

        $nome = $form->descricao->getValue();
        if (!isset($nome)) {
            $resp->addErro(utf8_encode("A 'Descrição' é obrigatória."));
        }else{
            $perfil = Application_Model_PerfilAcesso::getInstance()->getByName($nome);
            if(isset($perfil) && $perfil['codigo'] !=  $_POST['codigo']){
                $resp->addErro("A 'Descrição' já é utilizada e não pode ser repetida.");
            }
        }

        echo Zend_Json::encode(array("erros" => $resp->getErros()), Zend_Json::TYPE_OBJECT);
        die();
    }

    public function novoAction() {
        $codigo = $this->_request->getParam('codigo');
        $form = new Application_Form_PerfilAcesso_Insere($codigo);
        $model = Application_Model_PerfilAcesso::getInstance();
        $form->setDefaults($this->_request->getPost());
        $labels = array('dt_cadastro','dt_exclusao');
        $modulesAcess = $this->getModulesAcess($this->_request->getPost());
        
        
        $session = new Zend_Session_Namespace('msg');
        
        if(isset($codigo)){
            $model->update($form->getValues(),$modulesAcess);
            $msg['msg1'] = 'Perfil de Acesso modificado com sucesso.';
        }else{
            $model->insert($form->getValues(),$modulesAcess);
            $msg['msg1'] = 'Perfil de Acesso adicionado com sucesso.';
        }
        
        $session->msgs =$msg;
        $this->_helper->redirector('index','consulta','perfilAcesso');
    }

    
    public function deleteAction() {
        $codigo = $this->_request->getParam('codigo');
        if(is_numeric($codigo)){
            $model = Application_Model_PerfilAcesso::getInstance();
            $model->remove($codigo);
            $msg['msg1'] = 'Perfil de Acesso excluído com sucesso.';
            $session = new Zend_Session_Namespace('msg');
            $session->msgs =$msg;
        }else{
            $msg['delete1'] = 'Não foi possível excluir o Perfil de Acesso.';
            $session = new Zend_Session_Namespace('erros');
            $session->erros =$msg;
        }
        
        $this->_helper->redirector('index','consulta','perfilAcesso');
    }
    
    public function validaRemocaoAction(){
        $codigo = $this->_request->getParam('codigo');
        $resp = new Util_Function_JsonResponse();
        $count = null;
        if(isset($codigo)){
            $count = Application_Model_Funcionario::getInstance()->getQntFuncionarioByPerfilAcesso($codigo);
        }else{
            $resp->addErro('É necessário enviar um código');
        }
        
        if(isset($count) && count($count) > 0){
            if($count['qnt'] > 0){
                $resp->addErro('O perfil de acesso selecionado é utilizado por funcionário(s), modifique o cadastro do(s) funcionário(s) para excluí-lo.');
            }
        }
        
        echo Zend_Json::encode(array("erros" => $resp->getErros()), Zend_Json::TYPE_OBJECT);
        die;
    }
    
    
    private function getModulesAcess($data){
        $retorno;
        $modulos = Application_Model_Modulo::getInstance()->getModulosListaCodigo();
        
        foreach ($modulos as $value) {
            $item['modulo'] = $value['codigo'];
            
            if(isset($data['modulo_ed']) && array_search($value['codigo'], $data['modulo_ed']) !== false){
              $item['edita']='S';
            }else{
              $item['edita']='N';
            }
            if(isset($data['modulo_con']) && array_search($value['codigo'], $data['modulo_con']) !== false){
              $item['consulta']='S';
            }else{
              $item['consulta']='N';
            }
            $retorno[]=$item;
        }
        
        return $retorno;
    }

}